package com.zyz.M_File和IO流.IO流.节点流.Reader和Writer;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author: vick
 * @Date: 2025/4/7
 * @Description:
 * @version: 1.0
 */
//调用 read(char[] cbuf)，每次从文件中读取多个字符
public class Demo3 {
    public static void main(String[] args) {
        FileReader fileReader = null;
        try {
            //1. 创建File对象，对应物理磁盘上的某个文件
            File file = new File("hello.txt");

            //2. 创建FileReader流对象
            fileReader = new FileReader(file);

            //3. 通过相关流的方法，读取文件中的数据
            //read(char[] cbuf) ： 每次将文件中的数据读入到 char 数组中，并且返回数组中的字符个数

            char[] cbuf = new char[5];
            //记录每次读入的字符个数
            int len;
            while ((len = fileReader.read(cbuf)) != -1) {

                /*
                方式一：
                for (int i = 0; i < len; i++) {
                    System.out.print(cbuf[i]);
                }*/

                //方式二：
                String str = new String(cbuf, 0, len);
                System.out.print(str);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //4. 关闭流资源，避免内存泄漏
            try {
                if (fileReader != null) {
                    fileReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
